home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / alien-neon-logo.scm < prev    next >
Text File  |  2009-12-15  |  8KB  |  188 lines

  1. ; GIMP - The GNU Image Manipulation Program
  2. ; Copyright (C) 1995 Spencer Kimball and Peter Mattis
  3. ;
  4. ; alien-neon-logo.scm - creates multiple outlines around the letters
  5. ; Copyright (C) 1999-2000 Raphael Quinet <quinet@gamers.org>
  6. ;
  7. ; This program is free software; you can redistribute it and/or modify
  8. ; it under the terms of the GNU General Public License as published by
  9. ; the Free Software Foundation; either version 2 of the License, or
  10. ; (at your option) any later version.
  11. ;
  12. ; This program is distributed in the hope that it will be useful,
  13. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. ; GNU General Public License for more details.
  16. ;
  17. ; You should have received a copy of the GNU General Public License
  18. ; along with this program; if not, write to the Free Software
  19. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. ;
  21. ; 1999-12-01 First version.
  22. ; 2000-02-19 Do not discard the layer mask so that it can still be edited.
  23. ; 2000-03-08 Adapted the script to my gimp-edit-fill changes.
  24. ; 2000-04-02 Split the script in two parts: one using text, one using alpha.
  25. ; 2000-05-29 More modifications for "Alpha to Logo" using a separate function.
  26. ;
  27. ; To do: use a channel mask for creating the bands, instead of working in the
  28. ; image.  gimp-invert would then work on one grayscale channel instead of
  29. ; wasting CPU cycles on three identical R, G, B channels.
  30. ;
  31.  
  32. (define (apply-alien-neon-logo-effect img
  33.                                       logo-layer
  34.                                       fg-color
  35.                                       bg-color
  36.                                       band-size
  37.                                       gap-size
  38.                                       num-bands
  39.                                       do-fade)
  40.   (let* (
  41.         (fade-size (- (* (+ band-size gap-size) num-bands) 1))
  42.         (width (car (gimp-drawable-width logo-layer)))
  43.         (height (car (gimp-drawable-height logo-layer)))
  44.         (bg-layer (car (gimp-layer-new img width height RGB-IMAGE "Background" 100 NORMAL-MODE)))
  45.         (bands-layer (car (gimp-layer-new img width height RGBA-IMAGE "Bands" 100 NORMAL-MODE)))
  46.         )
  47.  
  48.     (gimp-context-push)
  49.  
  50.     (script-fu-util-image-resize-from-layer img logo-layer)
  51.     (script-fu-util-image-add-layers img bands-layer bg-layer)
  52.     (gimp-selection-none img)
  53.     (gimp-context-set-background bg-color)
  54.     (gimp-edit-fill bg-layer BACKGROUND-FILL)
  55.     (gimp-context-set-background '(0 0 0))
  56.     (gimp-edit-fill bands-layer BACKGROUND-FILL)
  57.     ; The text layer is never shown: it is only used to create a selection
  58.     (gimp-selection-layer-alpha logo-layer)
  59.     (gimp-context-set-foreground '(255 255 255))
  60.     (gimp-edit-fill bands-layer FOREGROUND-FILL)
  61.  
  62.     ; Create multiple outlines by growing and inverting the selection
  63.     ; The bands are black and white because they will be used as a mask.
  64.     (while (> num-bands 0)
  65.       (gimp-selection-grow img band-size)
  66.       (gimp-invert bands-layer)
  67.       (gimp-selection-grow img gap-size)
  68.       (gimp-invert bands-layer)
  69.       (set! num-bands (- num-bands 1))
  70.     )
  71.  
  72.     ; The fading effect is obtained by masking the image with a gradient.
  73.     ; The gradient is created by filling a bordered selection (white->black).
  74.     (if (= do-fade TRUE)
  75.         (let ((bands-layer-mask (car (gimp-layer-create-mask bands-layer
  76.                                                              ADD-BLACK-MASK))))
  77.           (gimp-layer-add-mask bands-layer bands-layer-mask)
  78.           (gimp-selection-layer-alpha logo-layer)
  79.           (gimp-selection-border img fade-size)
  80.           (gimp-edit-fill bands-layer-mask FOREGROUND-FILL)
  81.           (gimp-layer-remove-mask bands-layer MASK-APPLY)))
  82.  
  83.     ; Transfer the resulting grayscale bands into the layer mask.
  84.     (let ((bands-layer-mask (car (gimp-layer-create-mask bands-layer
  85.                                                          ADD-BLACK-MASK))))
  86.       (gimp-layer-add-mask bands-layer bands-layer-mask)
  87.       (gimp-selection-none img)
  88.       (gimp-edit-copy bands-layer)
  89.       (gimp-floating-sel-anchor (car (gimp-edit-paste bands-layer-mask
  90.                                                       FALSE))))
  91.  
  92.     ; Fill the layer with the foreground color.  The areas that are not
  93.     ; masked become visible.
  94.     (gimp-context-set-foreground fg-color)
  95.     (gimp-edit-fill bands-layer FOREGROUND-FILL)
  96.     ;; (gimp-layer-remove-mask bands-layer MASK-APPLY)
  97.  
  98.     ; Clean up and exit.
  99.     (gimp-drawable-set-visible logo-layer 0)
  100.     (gimp-image-set-active-layer img bands-layer)
  101.     (gimp-displays-flush)
  102.  
  103.     (gimp-context-pop)
  104.   )
  105. )
  106.  
  107.  
  108. (define (script-fu-alien-neon-logo-alpha img
  109.                                          logo-layer
  110.                                          fg-color
  111.                                          bg-color
  112.                                          band-size
  113.                                          gap-size
  114.                                          num-bands
  115.                                          do-fade)
  116.  (begin
  117.     (gimp-image-undo-group-start img)
  118.     (apply-alien-neon-logo-effect img logo-layer fg-color bg-color
  119.                                   band-size gap-size num-bands do-fade)
  120.     (gimp-image-undo-group-end img)
  121.     (gimp-displays-flush)
  122.   )
  123. )
  124.  
  125. (script-fu-register "script-fu-alien-neon-logo-alpha"
  126.     _"Alien _Neon..."
  127.     _"Add psychedelic outlines to the selected region (or alpha)"
  128.     "Raphael Quinet (quinet@gamers.org)"
  129.     "Raphael Quinet"
  130.     "1999-2000"
  131.     "RGBA"
  132.     SF-IMAGE      "Image"             0
  133.     SF-DRAWABLE   "Drawable"          0
  134.     SF-COLOR      _"Glow color"       "green"
  135.     SF-COLOR      _"Background color" "black"
  136.     SF-ADJUSTMENT _"Width of bands"   '(2 1 60 1 10 0 0)
  137.     SF-ADJUSTMENT _"Width of gaps"    '(2 1 60 1 10 0 0)
  138.     SF-ADJUSTMENT _"Number of bands"  '(7 1 100 1 10 0 1)
  139.     SF-TOGGLE     _"Fade away"        TRUE
  140. )
  141.  
  142. (script-fu-menu-register "script-fu-alien-neon-logo-alpha"
  143.                          "<Image>/Filters/Alpha to Logo")
  144.  
  145.  
  146. (define (script-fu-alien-neon-logo text
  147.                                    size
  148.                                    fontname
  149.                                    fg-color
  150.                                    bg-color
  151.                                    band-size
  152.                                    gap-size
  153.                                    num-bands
  154.                                    do-fade)
  155.   (let* (
  156.         (img (car (gimp-image-new 256 256 RGB)))
  157.         (fade-size (- (* (+ band-size gap-size) num-bands) 1))
  158.         (text-layer (car (gimp-text-fontname img -1 0 0 text (+ fade-size 10) TRUE size PIXELS fontname)))
  159.         )
  160.     (gimp-image-undo-disable img)
  161.     (apply-alien-neon-logo-effect img text-layer fg-color bg-color
  162.                                   band-size gap-size num-bands do-fade)
  163.     (gimp-image-undo-enable img)
  164.     (gimp-display-new img)
  165.   )
  166. )
  167.  
  168. (script-fu-register "script-fu-alien-neon-logo"
  169.   _"Alien _Neon..."
  170.   _"Create a logo with psychedelic outlines around the text"
  171.   "Raphael Quinet (quinet@gamers.org)"
  172.   "Raphael Quinet"
  173.   "1999-2000"
  174.   ""
  175.   SF-STRING     _"Text"               "GIMP"
  176.   SF-ADJUSTMENT _"Font size (pixels)" '(150 2 1000 1 10 0 1)
  177.   SF-FONT       _"Font"               "Blippo"
  178.   SF-COLOR      _"Glow color"         "green"
  179.   SF-COLOR      _"Background color"   "black"
  180.   SF-ADJUSTMENT _"Width of bands"     '(2 1 60 1 10 0 0)
  181.   SF-ADJUSTMENT _"Width of gaps"      '(2 1 60 1 10 0 0)
  182.   SF-ADJUSTMENT _"Number of bands"    '(7 1 100 1 10 0 1)
  183.   SF-TOGGLE     _"Fade away" TRUE
  184. )
  185.  
  186. (script-fu-menu-register "script-fu-alien-neon-logo"
  187.                          "<Image>/File/Create/Logos")
  188.